package com.jinyu.jyly.net.api;


import com.jinyu.jyly.bean.AllInfoBean;

import java.util.List;

import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import rx.Observable;

/**
 * Created by Administrator on 2018-04-19.
 * 项目api的接口
 */


public interface ApiService {


    @FormUrlEncoded
    @POST("/user/getLoginCode.json")
    Observable<Object> getLoginCode(@Field("noncestr") String noncestr,
                                    @Field("type") String type);


    /**
     * 获取收获地址列表
     *
     * @return
     */
    @POST("address_list")
    Observable<AllInfoBean> getAddressList();

    /**
     * 添加或者修改用户地址
     *
     * @return
     */
    @FormUrlEncoded
    @POST("update_address")
    Observable<AllInfoBean> getAddOrUpdateAddress(@Field("data") String data);


    /**
     * 获取直推用户
     *
     * @return
     */
    @POST("childs")
    Observable<AllInfoBean> getChildsList();

    /**
     * 获取banner
     *
     * @return
     */
    @FormUrlEncoded
    @POST("site/ad")
    Observable<AllInfoBean> getSiteAd(@Field("data") String data);

    /**
     * 未登录验证码
     *
     * @return
     */
    @FormUrlEncoded
    @POST("site/send_sms")
    Observable<AllInfoBean> send_sms(@Field("data") String data);

    /**
     * 获取公告
     *
     * @return
     */
    @FormUrlEncoded
    @POST("site/articles")
    Observable<AllInfoBean> getGongGaoList(@Field("data") String data);

    /**
     * 注册
     *
     * @return
     */
    @FormUrlEncoded
    @POST("register")
    Observable<AllInfoBean> onRegister(@Field("data") String data);

    /**
     * 忘记密码
     *
     * @return
     */
    @FormUrlEncoded
    @POST("find_password")
    Observable<AllInfoBean> onForgetPsw(@Field("data") String data);

    /**
     * 登录
     *
     * @return
     */
    @FormUrlEncoded
    @POST("login")
    Observable<AllInfoBean> onLogin(@Field("data") String data);

    /**
     * 获取文章列表
     *
     * @return
     */
    @FormUrlEncoded
    @POST("site/articles")
    Observable<AllInfoBean> getSiteArtices(@Field("data") String data);

    /**
     * 文章详情
     *
     * @return
     */
    @FormUrlEncoded
    @POST("site/article")
    Observable<AllInfoBean> getArticleDetail(@Field("data") String data);

    /**
     * 获取商品分类
     *
     * @return
     */
    @POST("good_types")
    Observable<AllInfoBean> getGoodsTypes();

    /**
     * 获取商品列表
     *
     * @return
     */
    @FormUrlEncoded
    @POST("good_list")
    Observable<AllInfoBean> getGoodsList(@Field("data") String data);

    /**
     * 商品列表（新接口）
     *
     * @return
     */
    @FormUrlEncoded
    @POST("page_good_list")
    Observable<AllInfoBean> getPageGoodsList(@Field("data") String data);

     /**
     * 获取场次时间
     * @return
     */
    @POST("get_times")
    Observable<AllInfoBean> getTimes();

    /**
     * 获取商品详情
     *
     * @return
     */
    @FormUrlEncoded
    @POST("good_view")
    Observable<AllInfoBean> getGoodsDetail(@Field("data") String data);

    /**
     * 提交订单
     * @return
     */
    @FormUrlEncoded
    @POST("add_order")
    Observable<AllInfoBean> addOrder(@Field("data") String data);

    /**
     * 获取个人信息接口
     *
     * @return
     */
    @POST("user/view")
    Observable<AllInfoBean> getUserView();

    /**
     * 提交转账
     *
     * @return
     */
    @FormUrlEncoded
    @POST("transfer")
    Observable<AllInfoBean> setTransfer(@Field("data") String data);

//

    /**
     * 根据手机号获取用户昵称
     *
     * @return
     */
    @FormUrlEncoded
    @POST("get_name")
    Observable<AllInfoBean> getNickName(@Field("data") String data);


    /**
     * 提交购买绿色通道
     * @return
     */
    @POST("add_green")
    Observable<AllInfoBean> addGreen();

    /**
     * //     * 验证身份证
     * //     *
     * //     * @return
     * //
     */
    @FormUrlEncoded
    @POST("user/card")
    Observable<AllInfoBean> getUserAuth(@Field("data") String data);

    /**
     * 修改昵称
     *
     * @return
     */
    @FormUrlEncoded
    @POST("change_name")
    Observable<AllInfoBean> setNickName(@Field("data") String data);


    /**
     * 修改手机号
     *
     * @return
     */
    @FormUrlEncoded
    @POST("change_contract_mobile")
    Observable<AllInfoBean> changeMobile(@Field("data") String data);


    /**
     * 登录后发送
     *
     * @return
     */
    @POST("site/make_sms")
    Observable<AllInfoBean> siteMakeSms();


    /**
     * 意见反馈
     *
     * @return
     */
    @FormUrlEncoded
    @POST("suggest")
    Observable<AllInfoBean> setSuggest(@Field("data") String data);

    /**
     * 意见反馈列表
     *
     * @return
     */
    @POST("suggest_list")
    Observable<AllInfoBean> setSuggestList();


    /**
     * 我的订单
     *
     * @return
     */
    @FormUrlEncoded
    @POST("order_list")
    Observable<AllInfoBean> getOrderList(@Field("data") String data);

     /**
     * 我的订单(新接口)
     *
     * @return
     */
    @FormUrlEncoded
    @POST("page_order_list")
    Observable<AllInfoBean> getPageOrderList(@Field("data") String data);




    /**
     * 获取支付参数
     *
     * @return
     */
    @POST("get_payment")
    Observable<AllInfoBean> getPayMent();

    /**
     * 提交支付参数
     *
     * @return
     */
    @FormUrlEncoded
    @POST("update_payment")
    Observable<AllInfoBean> setPayment(@Field("data") String data);

    /**
     * 通过订单获取支付参数
     *
     * @return
     */
    @FormUrlEncoded
    @POST("get_order_payment")
    Observable<AllInfoBean> getOrderPayment(@Field("data") String data);

    /**
     * 上传图片
     *
     * @return
     */
    @Multipart
    @POST("upload")
    Observable<AllInfoBean> updataImg(@Part List<MultipartBody.Part> requestBodyMap);

    /**
     * 充值
     *
     * @return
     */
    @FormUrlEncoded
    @POST("add_chong")
    Observable<AllInfoBean> addChong(@Field("data") String data);

     /**
     * 提现
     *
     * @return
     */
    @FormUrlEncoded
    @POST("recharge")
    Observable<AllInfoBean> setRecharge(@Field("data") String data);



    /**
     * 获取充值二维码
     * @return
     */
    @POST("get_chong_payment")
    Observable<AllInfoBean> getChonePayment();


    /**
     * 更新订单状态
     *
     * @return
     */
    @FormUrlEncoded
    @POST("update_order")
    Observable<AllInfoBean> getChangeOrder(@Field("data") String data);

    /**
     * 待转拍
     *
     * @return
     */
    @FormUrlEncoded
    @POST("change_order")
    Observable<AllInfoBean> setChangeOrder(@Field("data") String data);

    /**
     * 确认收货
     *
     * @return
     */
    @FormUrlEncoded
    @POST("make_shou")
    Observable<AllInfoBean> setChangeShouHuo(@Field("data") String data);


    /**
     * 获取系统配置
     *
     * @return
     */
    @POST("config")
    Observable<AllInfoBean> getConfig();


    /**
     * 修改联系人手机号
     *
     * @return
     */
    @FormUrlEncoded
    @POST("change_contract_mobile")
    Observable<AllInfoBean> changeContractMobile(@Field("data") String data);

    /**
     * 修改密码
     *
     * @return
     */
    @FormUrlEncoded
    @POST("user/change_password")
    Observable<AllInfoBean> changePassword(@Field("data") String data);


    /**
     * 获取流水
     *
     * @return
     */
    @FormUrlEncoded
    @POST("property_list")
    Observable<AllInfoBean> getPropertyList(@Field("data") String data);

     /**
     * 获取绿色通道列表
     *
     * @return
     */
    @POST("get_greens")
    Observable<AllInfoBean> get_greens();


    /**
     * 获取通知消息
     * @return
     */
    @POST("notice")
    Observable<AllInfoBean> getNotice();



    /**
     * 检查是否需要更新app
     *
     * @return
     */
    @FormUrlEncoded
    @POST("version")
    Observable<AllInfoBean> getUpdataApp(@Field("data") String data);

    /**
     * 获取价格
     *
     * @return
     */
    @POST("get_prices")
    Observable<AllInfoBean> getPrice();

    /**
     * 待被买商品
     *
     * @return
     */
    @POST("my_good_list")
    Observable<AllInfoBean> getMyGoodList();

     /**
     * 待被买商品(新接口)
     * @return
     */
     @FormUrlEncoded
    @POST("page_my_good_list")
    Observable<AllInfoBean> getPageMyGoodList(@Field("data") String data);



  /**
     * 新人预约接口
     *
     * @return
     */
    @POST("add_new_green")
    Observable<AllInfoBean> setAddNewGreen();


}
